草庐IT

Ruby bool 双重否定约定

全部标签

c - Ruby C 扩展开发人员的命名约定

在用C为ruby​​编写扩展时,我对遵循正确的命名约定很感兴趣。具体来说,我指的是将_p添加到谓词的函数名称以及为变量添加前缀m代表模块,c代表类等等。例如,如果我们想在C语言中定义一个像下面这样的谓词方法,我们应该在定义该方法的函数中使用_p作为后缀。classMyClassdefawesome?trueendend在C中:staticVALUEmy_extension_my_class_awesome_p(VALUEself){returnQtrue;}voidInit_my_extension(void){VALUEcMyClass=rb_define_class("MyClas

访问数组中第一个/最后一个元素的 Ruby 约定

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion这是一个关于约定的问题。下面的两组命令返回相同的结果。a=[1,2,3]a.first#=>1a[0]#=>1a.last#=>3a[-1]#=>3在Ruby中,哪一个是首选,显式索引还是函数?当然,假设这是总是访问第一个或最后一个元素的代码。注意:我一直在考虑每个周期所花费的时间。因为first和last接受参数,所以它们会有更多的开销,但我不知道这是否会影响社区的偏好。谢谢!编辑如果您

ruby-on-rails - bool 属性的命名约定

我想编写其他人也能轻松理解的代码。hide_email或email_hidden等bool属性是否有约定样式? 最佳答案 我是这样想的:bool属性应该回答一个简单的是/否问题。问“是?”是提出是/否问题的简单方法。所以bool属性名应该完成句子is然后删除is因为Ruby更喜欢?“is”样式方法名称的后缀(更多信息请参见下文),只剩下email_hidden因此,对于您的具体情况,将您的属性命名为:从“电子邮件被隐藏”这个问题开始?在代码中可以表示为:email_is_hidden.删除is然后你剩下email_hiddenRub

ruby-on-rails - 为什么使用 before_action 没有双重渲染?

我想知道为什么在before_action中有redirect_to或render时没有双重渲染。考虑这个例子:classSomeController我看到before_action如果不能重定向就没用了,但它是如何制作的?如果我评论before_action它会抛出异常。before_action是如何实现的而不导致双重渲染? 最佳答案 参见RailsGuideoncontrollers:Ifa"before"filterrendersorredirects,theactionwillnotrun.Ifthereareadditi

ruby - 方法调用中是否有内存约定?

我想避免在方法调用中重新计算一个值。到目前为止,我一直在这样做:defsome_method@some_method||=begin#lot'sofcodeendend但它最终变得非常丑陋。在一些代码中,我看到了如下内容:defsome_method@some_method||=some_method!endprivatedefsome_method!#lot'sofcodeend我不喜欢最后的爆炸(!),所以我想到了这个:defsome_method@some_method||=_some_methodendprivatedef_some_method#lot'sofcodeend在

Ruby bool 双重否定约定

谁能告诉我为什么很多Rubybool方法使用这种双重否定约定?!!(booleanexpression) 最佳答案 双重否定确保无论初始值如何,您将始终得到true或false,绝不会是神秘值。这很方便,因为它避免了对您不再需要的对象的悬垂引用,或者必须区分两种类型的假值,nil和false。经常你会看到这样写的方法:deflogged_in?!!@session_userend这将返回true或false并且该值可用于任何需要的目的。将其与此进行比较:deflogged_in?@session_userend在这种情况下,如果您保

Ruby - 命名约定 - 类/模块名称中首字母缩略词的字母大小写?

我需要在名为“SCM”的模块中创建一个代表“SVN”的类。但我不知道在处理Ruby中的首字母缩略词时的约定是什么,并且在Google中找不到任何相关内容,除了“首选驼峰式大小写”。我应该称它为SCM::SVN还是Scm::Svn?有这方面的约定吗? 最佳答案 将以下内容添加到config/initializers/inflections.rb。ActiveSupport::Inflector.inflections(:en)do|inflect|inflect.acronym'SVN'end现在运行$railsgmodelSVN..

在大型双重转换为未签名的INT中堆叠腐败

在Windows计算机上运行VisualC++,我发现以下代码行似乎是通过调用__dtoui3的呼叫损坏内存(此调用后一堆字节更改。具体来说,DBL_MAX的值似乎是在两次中打印的,在记忆中的随机位置行)doubletemp=DBL_MAX;unsignedintblissfullyUnaware=(unsignedint)temp;但是,以下没有:doubletemp=0;unsignedintblissfullyUnaware=(unsignedint)temp;谁能阐明为什么会发生这种情况?看答案[cons.fpint]/1浮点类型的prvalue可以转换为整数类型的prvalue。转换

ruby-on-rails - 是否可以否定 Rails 中的作用域?

我的类Collection有以下作用域:scope:with_missing_coins,joins(:coins).where("coins.is_missing=?",true)我可以运行Collection.with_missing_coins.count并返回结果——效果很好!目前,如果我想在不丢失硬币的情况下获得收藏品,我会添加另一个范围:scope:without_missing_coins,joins(:coins).where("coins.is_missing=?",false)我发现自己写了很多这些“相反”的范围。是否有可能在不牺牲可读性或求助于lambda/方法(

Ruby: bool 属性命名约定和使用

学习ruby。我的印象是bool属性应该命名如下:my_boolean_attribute?但是,我在尝试执行以下操作时遇到语法错误:classMyClassattr_accessor:my_boolean_attribute?definitialize:my_boolean_attribute?=falseendend显然ruby​​讨厌“?”。这是惯例吗?我做错了什么? 最佳答案 编辑:三年后;时代在变……Julik'sanswer是当今解决问题的最简单和最好的方法:classFooattr_accessor:deadalias